Skip to main content
Version: 2.x.x

Comparison

The biggest difference between Hyper Fetch and other libraries is the opinionated architecture and assumptions on which it is built. Hyper Fetch’s core features are written in TS without dependencies; because of this, it can work in many environments without a specific connection to a given framework.

Hyper Fetch is not just a wrapper; it offers full control over the flow and observation of data exchange. Our main goals were to introduce:

  • a data storage standard,
  • offer an embedded HTTP client,
  • reduce setup times,
  • solve major architectural difficulties.
info

Producing an accurate and unbiased comparison is quite a challenge. Libraries develop quickly, so if you notice that our data needs to be corrected, please let us know by opening an issue.


Why Hyper Fetch Is Unique​

  • Easy upload/download progress and ETA tracking
  • Supports request queueing and many dispatching strategies!
  • Command / Builder pattern gives you amazing control over requests at any time
  • Code-sharing architecture lets [testers to hook into development setup and types](/documentation/01-Getting Started/Testing.mdx)
  • Features flat side-effects helper hooks annotation and promotes readable code
  • Provides structure [recipes](/documentation/01-Getting Started/Development.mdx#structure) for large scale applications that significantly limit maintenance costs.
  • Core features include offline and persistence support, giving you full control over your data

Features​

βœ… - Documented support
🚧 - Work in progress
πŸ”΅ - Require additional Plugin/Coding
πŸ”΄ - Not supported / Not documented


Hyper FetchQuerySWRApollo
Supported environmentsAnyAnyReactAny
ProtocolsAnyAnyAnyGraphQL
Caching ApproachCommand SchemaHierarchical Key > ValueUnique Key > ValueNormalized Schema
Cache Key StrategyCommand KeyJSONJSONGraphQL Query
Data Change DetectionDeep ComparisonDeep ComparisonDeep ComparisonDeep Comparison
Data MemoizationNormalized IdentityFull Structural SharingIdentityNormalized Identity
Queue Key StrategyCommand KeyN/AN/AN/A
Devtoolsβœ…βœ…πŸ”΅βœ…
Server Connection Setup β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Shared Command β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Dependency tracking β„ΉοΈβœ…βœ…βœ…βœ…
Cache Persistenceβœ…βœ…βœ…βœ…
Requests Persistence β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Download ETA β„ΉοΈβœ… πŸ”΅πŸ”΅πŸ”΅
Uploading ETA β„ΉοΈβœ…πŸ”΅πŸ”΅πŸ”΅
Pooling β„ΉοΈβœ…βœ…βœ…βœ…
Dependent Queries β„ΉοΈβœ…βœ…βœ…βœ…
Paginated Queriesβœ…βœ…βœ…βœ…
Query Params Parsing β„ΉοΈβœ…πŸ”΅πŸ”΅πŸ”΅
Queueing β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Retries β„ΉοΈβœ…βœ…βœ…πŸ”΅
Default Client β„ΉοΈβœ…πŸ”΄πŸ”΄βœ…
Infinite Queries β„ΉοΈβœ…βœ…βœ…βœ…
SSR β„ΉοΈβœ…βœ…βœ…βœ…
Initial Data β„ΉοΈβœ…βœ…βœ…βœ…
Cache Hydration β„ΉοΈβœ… βœ… πŸ”΄βœ…
Garbage Collecting β„ΉοΈβœ…βœ…πŸ”΄πŸ”΄
Pre Request Intercepting β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Post Request Intercepting β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Prefetching β„ΉοΈβœ…βœ…πŸ”΅βœ…
Cancellation β„ΉοΈβœ…βœ…πŸ”΄πŸ”΄
Queue Cancellation β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Authentication β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Stale While Revalidate β„ΉοΈβœ…βœ…βœ…βœ…
Refresh Dataβœ…βœ…βœ…βœ…
Offline Request Pause β„ΉοΈβœ…βœ…πŸ”΄πŸ”΄
Network Status Re-fetching β„ΉοΈβœ…βœ…βœ…βœ…
Window Focus Re-fetching β„ΉοΈβœ…βœ…βœ…πŸ”΄
Normalized Caching β„ΉοΈβœ…πŸ”΄πŸ”΄βœ…
Automatic Re-fetch After Mutation β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Query Matching β„ΉοΈβœ…βœ…πŸ”΄πŸ”΄
Cache Matching β„ΉοΈβœ…βœ…βœ…βœ…
Query Lifecycle Events β„ΉοΈβœ…πŸ”΄πŸ”΄βœ…
Data Flow Standard β„ΉοΈβœ…πŸ”΄πŸ”΄βœ…
Request Start/Stop β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Request Queue Start/Stop/Pause β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Request Data Mapping β„ΉοΈβœ…πŸ”΅πŸ”΅N/A
Cache Invalidation β„ΉοΈβœ…βœ…βœ…βœ…
File Uploading β„ΉοΈβœ…πŸ”΅πŸ”΅βœ…
Global Response Side-Effects β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Scroll Recovery β„ΉοΈβœ…βœ…βœ…βœ…
Simple Command Execution β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Requests Manager β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Tabs Storages Synchronization β„ΉοΈπŸš§πŸš§πŸ”΄πŸ”΄
Tabs Dispatching Synchronization β„ΉοΈπŸš§πŸ”΄πŸ”΄πŸ”΄
Websocket β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Server Sent Events β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄

Typescript features​

Hyper FetchQuerySWRApollo
Response types β„ΉοΈβœ…βœ…βœ…βœ…
Request data types β„ΉοΈβœ…βœ…βœ…βœ…
Global error types β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Local error types β„ΉοΈβœ…πŸ”΄πŸ”΄πŸ”΄
Query params types β„ΉοΈβœ…πŸ”΄πŸ”΄βœ…
Params types β„ΉοΈβœ…πŸ”΄πŸ”΄βœ…
Command state tracking types β„ΉοΈβœ…πŸ”΄πŸ”΄βœ